package game.event;

import game.data.HurtData;
import hx.events.Event;

/**
 * 角色事件
 */
class RoleEvent extends Event {
	/**
	 * 帧改变时触发
	 */
	public static var FRAME_CHANGE = "frame_change";

	/**
	 * 进入帧时触发
	 */
	public static var FRAME_ENTER = "frame_enter";

	/**
	 * 离开帧时触发
	 */
	public static var FRAME_EXIT = "frame_exit";

	/**
	 * 攻击成功时触发，可调用`preventDefault`阻止攻击成功，但是会产生正常的硬值效果，只是不会产生伤害
	 */
	public static var ATTACKED = "attacked";

	/**
	 * 攻击开始时触发，会在`RoleEvent.ATTACKED`事件前触发，在这个阶段调用`preventDefault`会阻止本次攻击流程；
	 * 这个事件在触发攻击之前发生，在期间可以修改`e.hurtData.hitData`的数据来更改行为。
	 */
	public static var ATTACK_START = "attack_start";

	/**
	 * 当角色收到伤害时触发
	 */
	public static var HURT = "hurt";

	/**
	 * 回复血量时触发
	 */
	public static var ADD_HP = "add_hp";

	/**
	 * 受伤开始时触发，会在`RoleEvent.HURT`事件前触发，在这个阶段调用`preventDefault`会阻止本次攻击流程；
	 */
	public static var HURT_START = "hurt_start";

	/**
	 * 自定义事件
	 */
	public static var EVENT = "event";

	/**
	 * 角色死亡时触发
	 */
	public static var DEAD = "dead";

	/**
	 * 当技能特效被创建时触发，仅限于时间轴中的特效创建会发生调度
	 */
	public static var CREATE_SKILL = "create_skill";

	/**
	 * 释放技能时触发，通过`perventDefault`可以阻止本次默认技能释放，可通过`data`获得当前释放的技能名称
	 */
	public static var SKILL_START = "skill_start";

	/**
	 * 技能释放完成时触发，通过`data`获得当前释放的技能名称
	 */
	public static var SKILL_END = "skill_end";

	/**
	 * 事件帧
	 */
	public var frame:Int;

	/**
	 * 动作
	 */
	public var action:String;

	/**
	 * 伤害数据，当触发`RoleEvent.ATTACKED`、`RoleEvent.ATTACK_START`时，会返回此数据
	 */
	public var hurtData:HurtData;
}
